﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SMSManage
{
    public partial class frmManageParent : Form
    {
        public frmManageParent()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Form loaded
        /// </summary>
        private void frmManageParent_Load(object sender, EventArgs e)
        {
            BindData();
        }

        /// <summary>
        /// Bind init data
        /// </summary>
        private void BindData()
        {
            try
            {
                this.tbl_ParentTableAdapter.Fill_tbl_Parent_Select_All(this.parent.tbl_Parent);

                this.txt_ID.Text = String.Empty;
                this.txt_Name.Text = String.Empty;
                this.txt_Address.Text = String.Empty;
                this.txt_Tel.Text = String.Empty;
                this.txt_Desc.Text = String.Empty;
                this.cbb_Status.SelectedItem = "Kích hoạt";

                this.listBoxStudent.DataSource = null;

                this.btn_Update.Enabled = false;
                this.btn_Del.Enabled = false;
                this.btn_Add.Enabled = true;
                this.btn_Search.Enabled = true;
                this.txt_ID.Enabled = true;
            }
            catch (Exception exc)
            {
                exc.ToString();
            }

        }

        /// <summary>
        /// Bound data completely
        /// </summary>
        private void dtgrvParent_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            try
            {
                //Coded by Tuan
                for (int i = 0; i < this.dtgrvParent.Rows.Count; i++)
                {
                    this.dtgrvParent.Rows[i].Cells[0].Value = (i + 1).ToString(); //Thu tu
                    this.dtgrvParent.Rows[i].Cells["Student"].Value = "...";
                }
            }
            catch (Exception exc)
            {
                exc.ToString();
            }
            this.dtgrvParent.Refresh();
        }

        /// <summary>
        /// Cell clicked
        /// </summary>
        private void dtgrvParent_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.RowIndex > -1)
                {
                    //enable, disable buttons
                    this.btn_Update.Enabled = true;
                    this.btn_Del.Enabled = true;
                    this.btn_Add.Enabled = false;
                    this.btn_Search.Enabled = false;

                    this.txt_ID.Enabled = false;

                    int parentID = 
                        int.Parse(this.dtgrvParent.Rows[e.RowIndex].Cells["parentID"].Value.ToString());

                    this.txt_ID.Text = parentID.ToString();
                    this.txt_Name.Text = 
                        this.dtgrvParent.Rows[e.RowIndex].Cells["parentName"].Value.ToString();
                    this.txt_Tel.Text =
                        this.dtgrvParent.Rows[e.RowIndex].Cells["parentPhone"].Value.ToString();
                    this.txt_Address.Text =
                        this.dtgrvParent.Rows[e.RowIndex].Cells["parentAddress"].Value.ToString();

                    this.txt_Desc.Text =
                        this.dtgrvParent.Rows[e.RowIndex].Cells["parentDesc"].Value.ToString();

                    switch (this.dtgrvParent.Rows[e.RowIndex].Cells["parentStatus"].Value.ToString())
                    { 
                        case "1":
                                this.cbb_Status.SelectedItem = "Kích hoạt";
                            break;
                        case "0":
                                this.cbb_Status.SelectedItem = "Khóa";
                            break;
                        default:
                                this.cbb_Status.SelectedItem = "Kích hoạt";
                            break;
                    }
                    //bind data
                    DatasetXSD.StudentTableAdapters.tbl_Student_Select_AllTableAdapter dp
                        = new DatasetXSD.StudentTableAdapters.tbl_Student_Select_AllTableAdapter();
                    this.listBoxStudent.DataSource = dp.Get_tbl_Student_Select_All_By_ParentID(parentID);
                    this.listBoxStudent.DisplayMember = "StudentName";
                    this.listBoxStudent.ValueMember = "StudentID";
                }
            }
            catch (Exception exc)
            {
                exc.ToString();
            }
        }

        /// <summary>
        /// Xóa
        /// </summary>
        private void btn_Del_Click(object sender, EventArgs e)
        {
            try
            {
                DatasetXSD.ParentTableAdapters.tbl_ParentTableAdapter dp
                    = new DatasetXSD.ParentTableAdapters.tbl_ParentTableAdapter();
                if (MessageBox.Show("Bạn có thực sự muốn xóa phụ huynh này?", "Xác nhận",
                    MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    int ok =
                        dp.tbl_Parent_Delete_By_ParentID(Convert.ToInt32(this.txt_ID.Text.Trim()));

                    //Nếu có nhiều hơn 0 bản ghi được xóa
                    if (ok > 0)
                    {
                        MessageBox.Show("Xóa thành công", "Thành công", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        BindData();
                        this.dtgrvParent.Refresh();
                    }
                    else
                    {
                        MessageBox.Show("Xóa thất bại", "Thất bại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, xóa thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        /// <summary>
        /// Cập nhật
        /// </summary>
        private void btn_Update_Click(object sender, EventArgs e)
        {
            try
            {
                DatasetXSD.ParentTableAdapters.tbl_ParentTableAdapter dp
                    = new DatasetXSD.ParentTableAdapters.tbl_ParentTableAdapter();
                int status = 0;

                switch (this.cbb_Status.SelectedItem.ToString())
                {
                    case "Kích hoạt":
                        status = 1;
                        break;
                    case "Khóa":
                        status = 0;
                        break;
                    default:
                        status = 1;
                        break;
                }
                if (MessageBox.Show("Bạn có thực sự muốn cập nhật phụ huynh này?", "Xác nhận",
                    MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    int ok = dp.tbl_Parent_Update_All_By_ParentID(this.txt_Name.Text.Trim(),
                                                                    this.txt_Tel.Text.Trim(),
                                                                    this.txt_Address.Text.Trim(),
                                                                    this.txt_Desc.Text.Trim(),
                                                                    status,
                                                                    int.Parse(this.txt_ID.Text.Trim()));
                    //Nếu có hơn 0 bản ghi được cập nhật
                    if (ok > 0)
                    {
                        MessageBox.Show("Cập nhật thành công", "Thành công", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        BindData();
                        this.dtgrvParent.Refresh();
                    }
                    else
                    {
                        MessageBox.Show("Cập nhật thất bại", "Thất bại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (Exception exc)
            {
                exc.ToString();
            }
        }

        /// <summary>
        /// thoát
        /// </summary>
        private void btn_Close_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        /// <summary>
        /// tìm kiếm
        /// </summary>
        private void btn_Search_Click(object sender, EventArgs e)
        {
            try
            {
                string status = String.Empty;
                switch (this.cbb_Status.SelectedItem.ToString())
                {
                    case "Kích hoạt":
                        status = "1";
                        break;
                    case "Khóa":
                        status = "0";
                        break;
                    default:
                        status = String.Empty;
                        break;
                }

                DatasetXSD.ParentTableAdapters.tbl_ParentTableAdapter dp =
                    new DatasetXSD.ParentTableAdapters.tbl_ParentTableAdapter();
                this.dtgrvParent.DataSource = dp.Get_tbl_Parent_Search_By_All(this.txt_ID.Text.Trim(),
                    this.txt_Name.Text.Trim(), this.txt_Tel.Text.Trim(), this.txt_Address.Text.Trim(),
                    this.txt_Desc.Text.Trim(), status);
                this.dtgrvParent.Refresh();

            }
            catch (Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, tìm kiếm thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        /// <summary>
        /// Thêm mới
        /// </summary>
        private void btn_Add_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.txt_Name.Text.Trim() != String.Empty
                    && this.txt_Tel.Text.Trim() != String.Empty)
                {
                    if (MessageBox.Show("Bạn có thực sự muốn thêm mới phụ huynh này?", "Xác nhận",
                        MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        DatasetXSD.ParentTableAdapters.tbl_ParentTableAdapter dp
                            = new DatasetXSD.ParentTableAdapters.tbl_ParentTableAdapter();
                        int status = 0;
                        switch (this.cbb_Status.SelectedItem.ToString())
                        {
                            case "Kích hoạt":
                                status = 1;
                                break;
                            case "Khóa":
                                status = 0;
                                break;
                            default:
                                status = 1;
                                break;
                        }
                        int ok = dp.tbl_Parent_Insert(this.txt_Name.Text.Trim(),
                                                        this.txt_Tel.Text.Trim(),
                                                        this.txt_Address.Text.Trim(),
                                                        this.txt_Desc.Text.Trim(),
                                                        status);
                        if (ok > 0)
                        {
                            //Báo thành công
                            MessageBox.Show("Thêm mới thành công", "Thành công", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            BindData();
                            this.dtgrvParent.Refresh();
                        }
                        else
                        {
                            //Báo thất bại
                            MessageBox.Show("Thêm mới thất bại", "Thất bại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }

                    }
                }
                else
                {
                    MessageBox.Show("Bạn vui lòng nhập tên phụ huynh, số điện thoại", "Nhập lại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                
            }
            catch (Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, thêm mới thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        /// <summary>
        /// Quản lý học viên tương ứng
        /// </summary>
        private void linkManageStudent_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (this.txt_ID.Text.Trim() != String.Empty)
            {
                frmPopUpStudentParent popUpStudentParent = new frmPopUpStudentParent();
                //popUpStudentParent.MdiParent = this.MdiParent;
                popUpStudentParent.ParentID = Convert.ToInt32(this.txt_ID.Text.Trim());
                popUpStudentParent.ShowDialog();
            }
        }

        private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs anError)
        {
            MessageBox.Show("Error happened " + anError.Context.ToString());

            if (anError.Context == DataGridViewDataErrorContexts.Commit)
            {
                MessageBox.Show("Commit error");
            }
            if (anError.Context == DataGridViewDataErrorContexts.CurrentCellChange)
            {
                MessageBox.Show("Cell change");
            }
            if (anError.Context == DataGridViewDataErrorContexts.Parsing)
            {
                MessageBox.Show("parsing error");
            }
            if (anError.Context == DataGridViewDataErrorContexts.LeaveControl)
            {
                MessageBox.Show("leave control error");
            }

            if ((anError.Exception) is ConstraintException)
            {
                DataGridView view = (DataGridView)sender;
                view.Rows[anError.RowIndex].ErrorText = "an error";
                view.Rows[anError.RowIndex].Cells[anError.ColumnIndex].ErrorText = "an error";

                anError.ThrowException = false;
            }
        }
    }
}
